Computer Programming Inheritance এবং Polymorphism গাইড ও নোট

222

ফোরট্রানে Inheritance এবং Polymorphism এর ব্যবহার

ফোরট্রান 90 থেকে শুরু করে আধুনিক ফোরট্রান সংস্করণগুলোতে Object-Oriented Programming (OOP) এর বৈশিষ্ট্য যেমন Inheritance এবং Polymorphism সাপোর্ট করা হয়েছে। এই ধারণাগুলি কেবলমাত্র কোডের পুনঃব্যবহারযোগ্যতা এবং রক্ষণাবেক্ষণ সহজতরই করে না, বরং প্রোগ্রামিংয়ের কাঠামো আরও সহজ এবং কার্যকর করে তোলে। যদিও ফোরট্রান OOP এর পূর্ণাঙ্গ সমর্থন প্রদান না করলেও, এটি কিছু মৌলিক ধারণা যেমন ইনহেরিট্যান্স এবং পলিমরফিজম সাপোর্ট করে।


১. Inheritance (উত্তরণ)

Inheritance হল একটি প্রোগ্রামিং ধারণা যেখানে একটি ক্লাস বা টাইপ অন্য ক্লাস বা টাইপ থেকে বৈশিষ্ট্য ও আচরণ (attributes and behaviors) উত্তরাধিকারসূত্রে গ্রহণ করে। ফোরট্রানে ইনহেরিট্যান্স কাজ করার জন্য সাধারণত type extension ব্যবহৃত হয়, যার মাধ্যমে একটি টাইপ নতুন বৈশিষ্ট্য এবং আচরণ পেতে পারে।

উদাহরণ: Type Extension (Inheritance)

module vehicle
    implicit none
    type :: vehicle_type
        character(len=50) :: brand
        real :: speed
    contains
        procedure :: display => display_vehicle
    end type vehicle_type

    contains
    subroutine display_vehicle(this)
        class(vehicle_type), intent(in) :: this
        print *, "Brand: ", this%brand
        print *, "Speed: ", this%speed
    end subroutine display_vehicle
end module vehicle

module car
    use vehicle
    implicit none
    type, extends(vehicle_type) :: car_type
        character(len=50) :: model
    contains
        procedure :: display => display_car
    end type car_type

    contains
    subroutine display_car(this)
        class(car_type), intent(in) :: this
        call display_vehicle(this%vehicle)
        print *, "Model: ", this%model
    end subroutine display_car
end module car

program main
    use car
    type(car_type) :: my_car

    my_car%vehicle%brand = "Toyota"
    my_car%vehicle%speed = 120.0
    my_car%model = "Corolla"

    call my_car%display()
end program main

ব্যাখ্যা:

  • vehicle_type হলো একটি বেস টাইপ যা brand এবং speed এর বৈশিষ্ট্য ধারণ করে।
  • car_type হলো একটি extended type যা vehicle_type থেকে ইনহেরিট করে এবং অতিরিক্ত model বৈশিষ্ট্য রাখে।
  • car_typedisplay_car সাবরুটিনে, display_vehicle নামক বেস টাইপের display ফাংশনটি কল করা হয়েছে।

আউটপুট:

Brand: Toyota
Speed: 120.0
Model: Corolla

ব্যাখ্যা:

  • Inheritance এর মাধ্যমে car_type টাইপটি vehicle_type থেকে বৈশিষ্ট্য উত্তরাধিকার হিসেবে পেয়েছে, এবং আমরা নতুন বৈশিষ্ট্য (model) যোগ করেছি।

২. Polymorphism (পলিমরফিজম)

Polymorphism হল একটি ধারণা যা একটি ইন্টারফেসের মাধ্যমে বিভিন্ন ধরনের অবজেক্টকে পরিচালনা করার সুযোগ দেয়। ফোরট্রানে polymorphism সাধারণত procedure overloading বা class polymorphism আকারে ব্যবহার করা হয়। ফোরট্রানে ক্লাস পলিমরফিজম করার জন্য, class type-bound procedure ব্যবহার করা হয়।

ফোরট্রানে পলিমরফিজম কেবলমাত্র type-bound procedures (অর্থাৎ methods) এবং procedure pointers এর মাধ্যমে পরিচালিত হয়।

উদাহরণ: Polymorphism using Type-bound Procedures

module animal
    implicit none
    type :: animal_type
        character(len=50) :: name
    contains
        procedure :: speak
    end type animal_type

    type, extends(animal_type) :: dog_type
    contains
        procedure :: speak => dog_speak
    end type dog_type

    type, extends(animal_type) :: cat_type
    contains
        procedure :: speak => cat_speak
    end type cat_type

    contains
    subroutine dog_speak(this)
        class(dog_type), intent(in) :: this
        print *, this%name, " says Woof!"
    end subroutine dog_speak

    subroutine cat_speak(this)
        class(cat_type), intent(in) :: this
        print *, this%name, " says Meow!"
    end subroutine cat_speak
end module animal

program main
    use animal
    type(dog_type) :: dog
    type(cat_type) :: cat

    dog%name = "Rex"
    cat%name = "Whiskers"

    call dog%speak()  ! Outputs: Rex says Woof!
    call cat%speak()  ! Outputs: Whiskers says Meow!
end program main

ব্যাখ্যা:

  • এখানে, animal_type হলো বেস টাইপ, এবং dog_typecat_type হলো এর এক্সটেনশন।
  • speak হলো একটি টাইপ-বাউন্ড সাবরুটিন যা dog_type এবং cat_type এর জন্য ভিন্নভাবে কাজ করবে (অর্থাৎ পলিমরফিক আচরণ)।
  • Polymorphism এই উদাহরণে, একই নামের speak সাবরুটিনের মাধ্যমে ভিন্ন আচরণ (উল্লেখযোগ্যভাবে Woof! এবং Meow!) অর্জন করা হয়েছে।

আউটপুট:

Rex says Woof!
Whiskers says Meow!

Inheritance এবং Polymorphism এর ব্যবহারের সুবিধা

  1. Code Reusability: ইনহেরিট্যান্সের মাধ্যমে কোড পুনঃব্যবহারযোগ্য হয়। একবার বেস ক্লাস তৈরি করার পর, তার বৈশিষ্ট্য এবং আচরণ উত্তরাধিকারসূত্রে অন্যান্য ক্লাসে চলে আসে।
  2. Improved Maintainability: বেস ক্লাসের পরিবর্তন করলে এর সমস্ত সাবক্লাসের কার্যকারিতা আপডেট হয়, যা কোডের রক্ষণাবেক্ষণ সহজ করে।
  3. Flexibility: পলিমরফিজম ফাংশনগুলিকে বিভিন্ন ধরনের ডেটা দিয়ে ব্যবহার করার সুযোগ দেয়, এবং কোডের বিভিন্ন অংশে একাধিক আউটপুট তৈরি করতে সক্ষম হয়। এটি প্রোগ্রামটিকে আরও ফ্লেক্সিবল এবং শক্তিশালী করে তোলে।
  4. Clearer and Cleaner Code: ইনহেরিট্যান্স এবং পলিমরফিজমের মাধ্যমে কোড আরও পরিষ্কার, সংগঠিত এবং সহজ হয়ে ওঠে, এবং কোডের পুনঃব্যবহারযোগ্যতা বাড়ায়।

উপসংহার

ফোরট্রানে Inheritance এবং Polymorphism Object-Oriented Programming এর গুরুত্বপূর্ণ ধারণা যা কোডের পুনঃব্যবহারযোগ্যতা, মডুলারিটি এবং রক্ষণাবেক্ষণ সহজ করতে সহায়তা করে। Inheritance এর মাধ্যমে একটি ক্লাস বা টাইপ অন্য ক্লাস বা টাইপ থেকে বৈশিষ্ট্য এবং আচরণ উত্তরাধিকার হিসেবে পেতে পারে, এবং Polymorphism এর মাধ্যমে একটি ইন্টারফেসের মাধ্যমে একাধিক ধরনের অবজেক্টের আচরণ পরিচালনা করা যায়।

Content added By
Promotion

Are you sure to start over?

Loading...